package util.assembly;

import java.util.ArrayList;
import java.util.List;

import bo.FormaDeCobro;
import bo.Venta;
import dto.FormaDeCobroDTO;
import dto.VentaDTO;

public class VentaAssembly {

	public static Venta toBO(VentaDTO ventaDTO) {
		
		Venta venta = new Venta();
		venta.setDeleted("0");
		venta.setId(ventaDTO.getId());
		venta.setFecha(ventaDTO.getFecha());
		venta.setRetiro(ventaDTO.getRetiro());
		venta.setEstado(ventaDTO.getEstado());

		venta.setCliente(ClienteAssembly.toBO(ventaDTO.getClienteDTO()));
		
		venta.setEntrega(EntregaAssembly.toBO(ventaDTO.getEntregaDTO()));
		
		venta.setFactura(FacturaAssembly.toBO(ventaDTO.getFacturaDTO()));
		
		List<FormaDeCobroDTO> formasDeCobroDTO = ventaDTO.getFormasDeCobro();
		if (formasDeCobroDTO != null) {
			List<FormaDeCobro> formasDeCobro = new ArrayList<FormaDeCobro>();
			for (FormaDeCobroDTO formaDeCobroDTO : formasDeCobroDTO) {
				FormaDeCobro fdc = new FormaDeCobro();
				fdc.setFormaDePago(formaDeCobroDTO.getFormaDePago());
				
				String valor = formaDeCobroDTO.getValor();
				if (valor != null && !"".equals(valor)) {
					fdc.setValor(Double.parseDouble(valor));
				}
				formasDeCobro.add(fdc);
			}
			venta.setFormasDeCobro(formasDeCobro);
		}
		
		return venta;
	}

	public static VentaDTO toDTO(Venta venta) {
		
		VentaDTO ventaDTO = new VentaDTO();
		ventaDTO.setId(venta.getId());
		ventaDTO.setFecha(venta.getFecha());
		ventaDTO.setRetiro(venta.getRetiro());
		ventaDTO.setEstado(venta.getEstado());
		
		ventaDTO.setClienteDTO(ClienteAssembly.toDTO(venta.getCliente()));
		ventaDTO.setEntregaDTO(EntregaAssembly.toDTO(venta.getEntrega()));
		ventaDTO.setFacturaDTO(FacturaAssembly.toDTO(venta.getFactura()));
		
		List<FormaDeCobro> formasDeCobro = venta.getFormasDeCobro();
		if (formasDeCobro != null) {
			List<FormaDeCobroDTO> formasDeCobroDTO = new ArrayList<FormaDeCobroDTO>();
			for (FormaDeCobro formaDeCobro : formasDeCobro) {
				FormaDeCobroDTO fdcDTO = new FormaDeCobroDTO();
				fdcDTO.setFormaDePago(formaDeCobro.getFormaDePago());
				
				Double valor = formaDeCobro.getValor();
				if (valor != null) {
					fdcDTO.setValor(valor.toString());
				}
				formasDeCobroDTO.add(fdcDTO);
			}
			ventaDTO.setFormasDeCobro(formasDeCobroDTO);
		}
		
		return ventaDTO;
	}
	
	
}
